/**
 * 转换高亮文字的方法
 * @param {*} str 要被处理的字符串
 * @param {*} target 要匹配关键字
 * @returns 处理后带标签高亮的方法
 */
export const lightFn = (str, target) => {
  // 创建正则对象(i: 忽略大小写, g: 全局匹配多次)
  const reg = new RegExp(target, 'ig')

  // 字符串.replace(目标字符, 要替换的字符)
  // 例如: 'abc'.replace('a', 'H')  原地结果: 'Hbc'
  // 例如: 'abcabc'.replace('a', 'H') 原地结果: 'Hbcabc' -> replace默认匹配一次
  // 怎么匹配多次用正则对象的g
  // 'abcabc'.replace(/a/g, 'H') 原地结果: 'HbcHbc'
  // 例如: 'abcAbc'.replace(/a/ig, '<span style="color: red;">a</span>') 原地结果: a和A都变成了小a带span标签的
  // 问题: 我不想让原字符串被换大小写, 想要保持原汁原味
  // 解决: 要替换成的字符串就得用函数形式
  'abcAbc'.replace(/a/ig, (match) => {
    // match的值: a和A
    return `<span style="color: red;">${match}</span>`
  })
  return str.replace(reg, (match) => {
    // match的值: 匹配的原字符串里的字符
    return `<span style="color: red">${match}</span>`
  })
}
